package part01_七大原则.p04_里氏原则;

/**里氏替换原则：
 * 1-所有引用父类的地方必须能透明的使用其子类的对象（父类的对象都能换成子类的对象）
 * 2-在使用继承时，遵循里氏替换原则，在子类中尽量不要重写父类的方法
 * 3-继承实际上让两个类耦合性增强了，在适当的情况下，可以通过聚合。组合。依赖等等，来解决问题
 * @ClassName: Liskov01
 * @Author: AllenSun
 * @Date: 2019/12/3 0:30
 */
public class Liskov01 {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("11-3="+a.func01(11,3));
        System.out.println("1-8="+a.func01(1,8));

        System.out.println("---------------------");

        B b = new B();
        System.out.println("11-3="+b.func01(11,3));
        System.out.println("1-8="+b.func01(1,8));
        System.out.println("11+3+9="+b.func02(11,3));
    }
}

//减法
class A{
    public int func01(int num01, int num02){
        return num01-num02;
    }
}

//继承后，改成加法
class B extends A{
    public int func01(int a, int b){
        return a+b;
    }

    public int func02(int a, int b){
        return func01(a,b)+9;
    }
}